// m
// 给定一个大小为m*n的矩阵mat，以对角线遍历的顺序，用一个数组返回这个矩阵的所有元素

// 1. 当行号 + 列号为偶数，遍历方向为从左下到右上，行号减1，列号加1
// 2. 当行号 + 列号为奇数，遍历方向为从右上到左下，行号加1，列号减1

// 边界情况
// 1. 向右上方向移动，如果在最后一列，则向下方移动，即x += 1，如果在第一行，则向右方移动，即y += 1，其他情况右上方向移动，x-=1，y+=1
// 2. 向左下方向移动，如果在最后一行，则向右方移动，即y += 1，如果在第一列，则向下移动，即x += 1，其余情况左下方向移动，x += 1,y-=1



function findDiagonalOrder(mat) {
    let rows = mat.length
    let cols = mat[0].length
    let count = rows * cols
    let x = 0, y = 0
    let ans = []

    for (let i = 0; i < count; i++) {
        ans.push(mat[x][y])
        if ((x + y) % 2 === 0) {
            // 最后一列
            if (y === cols - 1) {
                x += 1
                // 第一行
            } else if (x === 0) {
                y += 1
                // 右上方向
            } else {
                x -= 1
                y += 1
            }
        } else {
            //最后一行
            if (x === rows - 1) {
                y += 1
            } else if ( y === 0) {
                // 第一列
                x += 1
            } else {
                x += 1
                y -= 1
            }
        }
    }
    return ans
}

let mat = [[1, 2, 3], [4, 5, 6]]
let mat2 = [[1,2,3,4], [5,6,7,8],[9,10,11,12]]
console.log(findDiagonalOrder(mat2));